﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq.Expressions;
using devtm.Aop.Emit;
using devtm.Aop.InternalProcess;
using devtm.Aop.Convert;
using Mono.Cecil;
using System.Reflection;
using devtm.Aop.Linq.Boxs;

namespace devtm.Aop.Linq
{
    

    public class Proxy<T> : Proxy
    {


        #region Properties and Fields
       
        public bool Script { get; set; }
        
        #endregion
     
        

        #region Constructors
        
        internal Proxy()
        {

        }

        public Proxy(Type type)
        {
            base.Type = type;
        }

        #endregion


        #region Public Members


        public GroupMethod<T> GroupMethod(string label)
        {
            GroupMethod<T> g = new GroupMethod<T>(this, label);
            _list.Add(label, g);
            return g;
        }

                
        public GroupMethod<T> GroupMethod()
        {
            return GroupMethod(Guid.NewGuid().ToString());
        }
        

        #endregion
        

        //public Proxy<T> Target(T targetObject)
        //{
        //    Require.ArgumentNotNull("target", targetObject);
        //    this.target = targetObject;
        //    return this;
        //}
              

    }

}
